home *** CD-ROM | disk | FTP | other *** search
/ PC PowerPlay 58 / pcpp58a.iso / extras / quake 3 source / Q3A_ToolSource.exe / Main / PlugInManager.h < prev    next >
Encoding:
C/C++ Source or Header  |  2001-01-02  |  2.7 KB  |  80 lines

  1. // PlugInManager.h: interface for the CPlugInManager class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4.  
  5. #if !defined(AFX_PLUGINMANAGER_H__CFB18412_55FE_11D2_B082_00AA00A410FC__INCLUDED_)
  6. #define AFX_PLUGINMANAGER_H__CFB18412_55FE_11D2_B082_00AA00A410FC__INCLUDED_
  7.  
  8. #if _MSC_VER >= 1000
  9. #pragma once
  10. #endif // _MSC_VER >= 1000
  11.  
  12. #include "plugin.h"
  13.  
  14. class CPlugInManager  
  15. {
  16. private:
  17.   CObArray m_PlugIns;
  18.   CPtrArray m_BrushHandles;
  19.   CPtrArray m_SelectedBrushHandles;
  20.   CPtrArray m_ActiveBrushHandles;
  21.  
  22.   CPlugIn *m_pTexturePlug;
  23.   CPlugIn *m_pSurfaceListPlug;
  24.  
  25.   // v1.70
  26.   // brushes of the current entity ( see m_SelectedBrushHandles and m_ActiveBrushHandles )
  27.   CPtrArray m_EntityBrushHandles;
  28.   // allocated entities, not commited yet ( see m_BrushHandles )
  29.   CPtrArray m_EntityHandles;
  30.  
  31.   // tells in which array to look when given a patch index
  32.   enum EPatchesMode { EActivePatches, ESelectedPatches, EAllocatedPatches } PatchesMode;
  33.   // patches handles (brush_t*)
  34.   CPtrArray m_PatchesHandles;
  35.   // plugin-allocated patches, not commited yet (patchMesh_t*)
  36.   CPtrArray m_PluginPatches;
  37.  
  38. public:
  39.     CPlugIn * PluginForModule( HMODULE hPlug );
  40.     CPtrArray& GetActiveHandles() {return m_ActiveBrushHandles; };
  41.     CPtrArray& GetSelectedHandles() {return m_SelectedBrushHandles; };
  42.     CPtrArray& GetPluginPatches() {return m_PluginPatches; };
  43.     brush_t* FindBrushHandle(void *vp);
  44.     patchMesh_t* FindPatchHandle(int index);
  45.     int CreatePatchHandle();
  46.     int AllocateActivePatchHandles();
  47.     int AllocateSelectedPatchHandles();
  48.     void CommitPatchHandleToMap(int index, patchMesh_t *pMesh, char *texName);
  49.     void ReleasePatchesHandles() { m_PatchesHandles.RemoveAll(); m_PluginPatches.RemoveAll(); }
  50.     void AddFaceToBrushHandle(void *vp, vec3_t v1, vec3_t v2, vec3_t v3);
  51.     void CommitBrushHandleToMap(void *vp);
  52.     void DeleteBrushHandle(LPVOID vp);
  53.     LPVOID CreateBrushHandle();
  54.     void Dispatch(int n, const char *p);
  55.     void Cleanup();
  56.     void Init(const char* pPath);
  57.     CPlugInManager();
  58.     virtual ~CPlugInManager();
  59.     
  60.     // the texture manager front ends the single load
  61.     // addins (texture, model, map formats.. etc.)
  62.     _QERTextureInfo* GetTextureInfo();
  63.     void LoadTexture(const char *pFilename);
  64.     
  65.     LPVOID GetSurfaceFlags();
  66.     
  67.     // v1.70
  68.     CPtrArray& GetEntityBrushHandles() {return m_EntityBrushHandles; };
  69.     CPtrArray& GetEntityHandles() {return m_EntityHandles; };
  70.     // the vpBrush needs to be in m_BrushHandles
  71.     void CommitBrushHandleToEntity( LPVOID vpBrush, LPVOID vpEntity );
  72.     // the vpEntity needs to be in m_EntityHandles
  73.     void CommitEntityHandleToMap( LPVOID vpEntity );
  74.  
  75. protected:
  76.     int FillFuncTable(CPlugIn *pPlug);        // PGM
  77. };
  78.  
  79. #endif // !defined(AFX_PLUGINMANAGER_H__CFB18412_55FE_11D2_B082_00AA00A410FC__INCLUDED_)
  80.